package studyNote;

public class MathOperation {
    public static void main(String[] args) {
        // 记录开始时间（纳秒级精度）
        long startTime = System.nanoTime();

        // 外层循环：遍历第一个数 i（1到100）
        for (int i = 1; i <= 100; i++) {
            // 内层循环：遍历第二个数 j（从i+1开始，避免重复组合）
            for (int j = i + 1; j <= 100; j++) {
                // 计算两个数的平方和
                int sum = i * i + j * j;

                // 关键优化：如果平方和超过100的平方，提前终止内层循环
                // 因为c的最大值不能超过100，所以i²+j²不能超过10000
                if (sum > 10000) {
                    break;
                }

                // 计算可能的c值（取平方根的整数部分）
                int c = (int) Math.sqrt(sum);

                // 验证：检查c的平方是否等于原始平方和
                // 如果相等，说明(i,j,c)构成勾股数
                if (c * c == sum) {
                    System.out.println(i + "," + j + "," + c);
                }
            }
        }

        // 记录结束时间
        long endTime = System.nanoTime();

        // 计算执行时间（纳秒转换为毫秒）
        long duration = (endTime - startTime) / 1_000_000;

        // 输出执行时间
        System.out.println("程序执行时间: " + duration + " 毫秒");
    }
}
